﻿#ifndef TCPCLIENT_H
#define TCPCLIENT_H

#include <QMainWindow>
#include <QTcpSocket>
#include <QToolBar>
#include <QLabel>
#include <QHostInfo>
#include <QHostAddress>

QT_BEGIN_NAMESPACE
namespace Ui { class TcpClient; }
QT_END_NAMESPACE

class TcpClient : public QMainWindow
{
    Q_OBJECT

public:
    TcpClient(QWidget *parent = nullptr);
    ~TcpClient();

private:
    // 初始化Ui
    void initUi();

    // 获取本机Ip地址
    QString getLocalIp();

private slots:
    void on_btnSend_clicked();

    /**
     * @brief onConnectServerAct 连接到服务器
     */
    void onConnectServerAct();

    /**
     * @brief onDisconnectServerAct 断开连接
     */
    void onDisconnectServerAct();

    /**
     * @brief onClearAct 清除文本框
     */
    void onClearAct();

    /**
     * @brief onQuitAct 退出程序
     */
    void onQuitAct();

    // 连接上服务器
    void onConnected();

    /**
     * @brief onDisConnected 断开连接
     */
    void onDisConnected();

    /**
     * @brief onSocketStateChanged 网络状态变化
     * @param socketState
     */
    void onSocketStateChanged(QAbstractSocket::SocketState socketState);

    // 读取socket传入的数据
    void onSocketReadyRead();
private:
    Ui::TcpClient *ui;

    // 1.菜单工具栏
    // 1.1连接服务器
    QAction* connectServerAct   ;
    // 1.2断开连接
    QAction* disconnectServerAct;
    // 1.3清空文本框
    QAction* clearAct           ;
    // 1.4退出程序
    QAction* quitAct            ;

    // 网络状态
    QLabel* labSocketState;

    // socket
    QTcpSocket* clientTcp;
};
#endif // TCPCLIENT_H
